package tests;

import static org.junit.Assert.*;

import org.junit.Test;
import org.openstreetmap.gui.jmapviewer.Coordinate;

import capaGrafica.Fecha;
import capaNegocio.PedidoCliente;

public class TestPedidoCliente {

	// Devuelve las distancias entre las coordenadas expresadas en metros
	
	@Test
	public void testGetDistancia() {
		PedidoCliente a= new PedidoCliente("Mario", new Coordinate (0,0), new Fecha(1,1,1));
		PedidoCliente b= new PedidoCliente("Carlos", new Coordinate (10,10), new Fecha(1,1,1));
		PedidoCliente c= new PedidoCliente("Sabrina", new Coordinate (100,100), new Fecha(1,1,1));
		PedidoCliente d= new PedidoCliente("Dario", new Coordinate (-50,-50), new Fecha(1,1,1));
		PedidoCliente e= new PedidoCliente("Esteban", new Coordinate (-100,-100), new Fecha(1,1,1));

		assertEquals(0, PedidoCliente.distanciaEntrePedidos(a, a), 0.001);
		assertEquals(1568.52, PedidoCliente.distanciaEntrePedidos(a, b), 0.1);
		assertEquals(9815.40, PedidoCliente.distanciaEntrePedidos(a, c), 0.1);
		assertEquals(7293.88, PedidoCliente.distanciaEntrePedidos(a, d), 0.1);
		assertEquals(9815.40, PedidoCliente.distanciaEntrePedidos(a, e), 0.1);
	}

	@Test
	public void testGetDistancia2() {
		PedidoCliente a= new PedidoCliente("Mario", new Coordinate (20,20), new Fecha(1,1,1));
		PedidoCliente b= new PedidoCliente("Carlos", new Coordinate (20,20), new Fecha(1,1,1));
		PedidoCliente c= new PedidoCliente("Sabrina", new Coordinate (20,20), new Fecha(1,1,1));


		assertEquals(0, PedidoCliente.distanciaEntrePedidos(a, a), 0.001);
		assertEquals(0, PedidoCliente.distanciaEntrePedidos(a, b), 0.001);
		assertEquals(0, PedidoCliente.distanciaEntrePedidos(a, c), 0.001);
		assertEquals(0, PedidoCliente.distanciaEntrePedidos(b, c), 0.001);
	}
	
	@Test
	public void testGetDistancia3() {
		PedidoCliente a= new PedidoCliente("Mario", new Coordinate (-1500,-3000), new Fecha(1,1,1));
		PedidoCliente b= new PedidoCliente("Carlos", new Coordinate (1000,5000), new Fecha(1,1,1));
		PedidoCliente c= new PedidoCliente("Sabrina", new Coordinate (-20000,-30000), new Fecha(1,1,1));
		PedidoCliente d= new PedidoCliente("Dario", new Coordinate (0,0), new Fecha(1,1,1));
		PedidoCliente e= new PedidoCliente("Esteban", new Coordinate (20000,30000), new Fecha(1,1,1));

		assertEquals(6440.27, PedidoCliente.distanciaEntrePedidos(e, a), 0.1);
		assertEquals(6743.85, PedidoCliente.distanciaEntrePedidos(e, b), 0.1);
		assertEquals(13782.76, PedidoCliente.distanciaEntrePedidos(e, c), 0.1);
		assertEquals(6891.38, PedidoCliente.distanciaEntrePedidos(e, d), 0.1);
		assertEquals(0, PedidoCliente.distanciaEntrePedidos(e, e), 0.01);
	}
	
}
	
